<?php
/**
 * 
 * @author Admin
 *
 */
class doom_ctrl_request {

    const REQUEST_METHOD_NEED = 'get';

    public $requestMethod;

    /**
	 * 构造器
	 * @param string $reqMethod 请求方法(get/post)
	 */
    public function __construct() {

        $this->requestMethod = $_SERVER['REQUEST_METHOD'];
    }

    /**
     * 取整型值
     * @param string $name 参数名
     * @param int $default 默认值
     * @return 
     *      成功:int/array(int)
     *      无此参数:false/$default
	 */
    public function getInt($name, $default = false, $isPost = false) {

        if ($isPost) {
            $val = &$_POST[$name];
        } else {
            $val = &$_GET[$name];
        }
        if ($val === NULL) {
            return ($default === false ? false : $default);
        } else if (is_string($val)) {
            return intval($val);
        } else if (is_array($val)) {
            foreach ($val as &$v) {
                $v = intval($v);
            }
            unset($v);
            return $val;
        } else {
            return false;
        }
    }

    public function postInt($name, $default = false) {

        return $this->getInt($name, $default, true);
    }

    /**
     * 取整型值
     * @param string $name 参数名
     * @param int $default 默认值
     * @return 
     *      成功:int/array(int)
     *      无此参数:false/$default
     */
    public function getFloat($name, $default = false, $isPost = false) {

        if ($isPost) {
            $val = &$_POST[$name];
        } else {
            $val = &$_GET[$name];
        }
        if ($val === NULL) {
            return ($default === false ? false : $default);
        } else if (is_string($val)) {
            return floatval($val);
        } else if (is_array($val)) {
            foreach ($val as &$v) {
                $v = floatval($v);
            }
            unset($v);
            return $val;
        } else {
            return false;
        }
    }

    public function postFloat($name, $default = false) {

        return $this->getFloat($name, $default, true);
    }

    /**
	 * 取纯文本值(过滤掉任何html)
	 * @param string $name 参数名
	 * @param string $default 默认值
     * @return 
     *      成功:string/array(string)
     *      无此参数:false/$default
	 */
    public function getText($name, $default = false, $isPost = false) {

        if ($isPost) {
            $val = &$_POST[$name];
        } else {
            $val = &$_GET[$name];
        }
        if ($val === NULL) {
            return ($default === false ? false : $default);
        } else if (is_string($val)) {
            return strip_tags($val);
        } else if (is_array($val)) {
            foreach ($val as &$v) {
                $v = strip_tags($v);
            }
            unset($v);
            return $val;
        } else {
            return false;
        }
    }

    public function postText($name, $default = false) {

        return $this->getText($name, $default, true);
    }

    /**
	 * 取html值
	 * @param string $name 参数名
	 * @param string $default 默认值
	 * @param array $allowTags 允许的html tag列表
	 * @param array $forbidTags 阻止的html tag列表
	 * @return 
	 *         成功:string/array(string)
	 *         无此参数:false/$default
	 */
    public function getHtml($name, $default = false, $allowTags = NULL, $filter = NULL, $isPost = false) {

        if ($isPost) {
            $val = &$_POST[$name];
        } else {
            $val = &$_GET[$name];
        }
        if ($val === NULL) {
            return ($default === false ? false : $default);
        } else if (is_string($val)) {
            if ($allowTags !== NULL) {
                $val = strip_tags($val, $allowTags);
            }
            if ($filter !== NULL) {
                $val = $filter($val);
            }
            return $val;
        } else if (is_array($val)) {
            foreach ($val as &$v) {
                if ($allowTags !== NULL) {
                    $v = strip_tags($v, $allowTags);
                }
                if ($filter !== NULL) {
                    $v = $filter($v);
                }
            }
            unset($v);
            return $val;
        } else {
            return false;
        }
        //TODO
    }

    public function postHtml($name, $default = false, $allowTags = NULL, $filter = NULL) {

        return $this->getHtml($name, $default, $allowTags, $filter, true);
    }

    /**
     * 取上传文件信息
     * @param string $name 参数名
     * @param int $default 默认值
     * @return 
     *      成功:array/array(array)
     *      无此参数:false/$default
     */
    public function file($name, $default = false) {

        $val = &$_FILE[$name];
        if ($val === NULL) {
            return ($default === false ? false : $default);
        } else {
            return $val;
        }
    }
}